using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.ObjectBuilder;
using Microsoft.Practices.CompositeWeb;
using System.Transactions;
using GC2.Entities.Admin;
using GC2.ExceptionHandler.Services;
using GC2.DataAccess.DAAdmin;

namespace GC2.Bussines.BMAdmin
{
    public class BMItemCaja
    {
        public BMItemCaja(string coneccion) 
        {
            this.Connection = coneccion;
        }

        private string connection = "";
        public string Connection
        {
            get { return connection; }
            set { connection = value; }
        }

        private ItemCaja oItemCaja = new ItemCaja();
        private List<ItemCaja> listaItemCaja = new List<ItemCaja>();

        #region BMlistaCaja
        public List<ItemCaja> BMlistaCaja(ItemCaja itemCaja)
        {
            try
            {
                int nItem  = 0;
                Egresos egresos = new Egresos();
                List<Egresos> listaEgresos = new List<Egresos>();
                BMEgresos bmEgresos = new BMEgresos(connection);
                egresos.Id_Caja = itemCaja.Id_Caja;
                listaEgresos = bmEgresos.BMEgresosSearch(egresos, egresos);
                if (listaEgresos.Count > 0)
                {
                    foreach (Egresos item in listaEgresos)
                    {
                        oItemCaja = new ItemCaja();
                        nItem++;
                        oItemCaja.Item = nItem;
                        oItemCaja.Id_Caja = item.Id_Caja;
                        oItemCaja.Concepto = item.Concepto;
                        oItemCaja.Fecha = item.Fecha;
                        oItemCaja.Id_Concepto = item.Id_Concepto;
                        oItemCaja.Id_Item = item.Id_Egreso;
                        oItemCaja.Id_Tipo = 1;           // Tipo: 1=Egreso   2=Ingreso   3=Compra    4=Venta
                        oItemCaja.Id_Usuario = item.Id_Usuario;
                        oItemCaja.Monto = item.Monto;
                        oItemCaja.Observaciones = item.Observaciones;
                        oItemCaja.Tipo = "Egreso";
                        if (oItemCaja.Id_Concepto == 3)
                        {
                            oItemCaja.Id_Tipo = 3;
                            oItemCaja.Tipo = "Compra";
                            oItemCaja.Concepto = oItemCaja.Observaciones;
                        }
                        listaItemCaja.Add(oItemCaja);
                    }
                }

                Ingresos ingreso = new Ingresos();
                List<Ingresos> listaIngresos = new List<Ingresos>();
                BMIngresos bmIngresos = new BMIngresos(connection);
                ingreso.Id_Caja = itemCaja.Id_Caja;
                listaIngresos = bmIngresos.BMIngresosSearch(ingreso, ingreso);
                if (listaIngresos.Count > 0)
                {
                    foreach (Ingresos item in listaIngresos)
                    {
                        oItemCaja = new ItemCaja();
                        nItem++;
                        oItemCaja.Item = nItem;
                        oItemCaja.Id_Caja = item.Id_Caja;
                        oItemCaja.Concepto = item.Concepto;
                        oItemCaja.Fecha = item.Fecha;
                        oItemCaja.Id_Concepto = item.Id_Concepto;
                        oItemCaja.Id_Item = item.Id_Ingreso;
                        oItemCaja.Id_Tipo = 2;           // Tipo: 1=Egreso   2=Ingreso   3=Compra    4=Venta
                        oItemCaja.Id_Usuario = item.Id_Usuario;
                        oItemCaja.Monto = item.Monto;
                        oItemCaja.Observaciones = item.Observaciones;
                        oItemCaja.Tipo = "Ingreso";
                        if (oItemCaja.Id_Concepto == 4)
                        {
                            oItemCaja.Id_Tipo = 4;
                            oItemCaja.Tipo = "Venta";
                            oItemCaja.Concepto = oItemCaja.Observaciones;
                        }
                        listaItemCaja.Add(oItemCaja);
                    }
                }

                //Compras compra = new Compras();
                //List<Compras> listaCompras = new List<Compras>();
                //BMCompras bmCompras = new BMCompras();
                //compra.Id_Caja = itemCaja.Id_Caja;
                //listaCompras = bmCompras.BMComprasSearch(compra, compra);
                //if (listaCompras.Count > 0)
                //{
                //    foreach (Compras item in listaCompras)
                //    {
                //        oItemCaja = new ItemCaja();
                //        nItem++;
                //        oItemCaja.Item = nItem;
                //        oItemCaja.Concepto = item.Proveedor;
                //        oItemCaja.Fecha = item.Fecha;
                //        oItemCaja.Id_Concepto = item.Id_Proveedor;
                //        oItemCaja.Id_Item = item.Id_Compras;
                //        oItemCaja.Id_Tipo = 3;           // Tipo: 1=Egreso   2=Ingreso   3=Compra    4=Venta
                //        oItemCaja.Id_Usuario = item.Id_Usuario;
                //        oItemCaja.Monto = item.Total;
                //        oItemCaja.Pago = item.Pago;
                //        oItemCaja.CtaCte = item.CtaCte;
                //        oItemCaja.Observaciones = "";
                //        oItemCaja.Tipo = "Compra";
                //        listaItemCaja.Add(oItemCaja);
                //    }
                //}

                //Ventas venta = new Ventas();
                //List<Ventas> listaVentas = new List<Ventas>();
                //BMVentas bmVentas = new BMVentas();
                //venta.Id_Caja = itemCaja.Id_Caja;
                //listaVentas = bmVentas.BMVentasSearch(venta, venta);
                //if (listaVentas.Count > 0)
                //{
                //    foreach (Ventas item in listaVentas)
                //    {
                //        oItemCaja = new ItemCaja();
                //        nItem++;
                //        oItemCaja.Item = nItem;
                //        oItemCaja.Concepto = item.Cliente;
                //        oItemCaja.Fecha = item.Fecha;
                //        oItemCaja.Id_Concepto = item.Id_Cliente;
                //        oItemCaja.Id_Item = item.Id_Ventas;
                //        oItemCaja.Id_Tipo = 4;           // Tipo: 1=Egreso   2=Ingreso   3=Compra    4=Venta
                //        oItemCaja.Id_Usuario = item.Id_Usuario;
                //        oItemCaja.Monto = item.Total;
                //        oItemCaja.Pago = item.Pago;
                //        oItemCaja.CtaCte = item.CtaCte;
                //        oItemCaja.Observaciones = "";
                //        oItemCaja.Tipo = "Venta";
                //        listaItemCaja.Add(oItemCaja);
                //    }
                //}
               
                return listaItemCaja;
            }
            catch (Exception ex)
            {
                ExceptionBM exNew = new ExceptionBM();
                throw new System.Exception(exNew.exBM(ex.ToString()).ToString());
            }
        }
        #endregion
    }
}
